package Work20241116;

import java.util.Scanner;

/**
 * @author zdl
 * @date 2024/11/16
 */
public class Demo1 {

    public static void main(String[] args) {
        System.out.println("==========水仙花数=============");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个三位数:");
        int num = sc.nextInt();
        shui(num);
        System.out.println("==========三个数最大数=============");
        System.out.println("请输入三个整数:");
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int max = maxNum(a, b, c);
        System.out.println("最大值为:" + max);
        System.out.println("==========判断闰年=============");
        System.out.println("请输入一个年份:");
        int year = sc.nextInt();
        String s = runYear(year);
        System.out.println(s);
        System.out.println("==========下班安排=============");
        System.out.println("请用户输入今天是星期几（1-7）:");
        int day = sc.nextInt();
        String w = work(day);
        System.out.println(w);
        System.out.println("==========5个学生成绩=============");
        int[] arr = new int[5];
        for (int i = 0; i < 5; i++) {
            System.out.println("请输入第" + (i + 1) + "个学生成绩:");
            int score = sc.nextInt();
            arr[i] = score;
        }
        scoreStu(arr);
        System.out.println("==========回文数=============");
        System.out.println("请输入一个5位数:");
        int n = sc.nextInt();
        huiWenNum(n);
        System.out.println("==========判断三角形=============");
        System.out.println("请输入三角形的三个边长:");
        int q = sc.nextInt();
        int y = sc.nextInt();
        int e = sc.nextInt();
        String jiao = sanJiao(q, y, e);
        System.out.println(jiao);
        System.out.println("==========1-100的偶数和=============");
        ouSum();
        System.out.println("==========判断输入数的位数=============");
        System.out.println("请输入一个9位以内的整数:");
        int z = sc.nextInt();
        num(z);
    }

    /**
     * 1、判断水仙花数（请输入任意一个三位数，判断它是否是水仙花数？
     * 说明：水仙花数是指一个 3 位数，它的每个位上的数字的 3次幂之和等于它本身）（特别经典的题！）
     */
    public static void shui(int num) {
        int units = num % 10; //个位
        int decade = num / 10 % 10; //十位
        int hundred = num / 100; //百位
        if (num == units * units * units + decade * decade * decade + hundred * hundred * hundred) {
            System.out.println(num + "是一个水仙花数");
        } else {
            System.out.println("不是水仙花数");
        }
    }

    //2、请输入三个数，使用if语句找出最大的数（if）
    public static int maxNum(int a, int b, int c) {
        if (a > b && a > c) {
            return a;
        } else if (b > a && b > c) {
            return b;
        } else if (c > a && c > b) {
            return c;
        } else {
            return -1;
        }
    }

    //请输入任意一个年份，判断该年份是否是闰年？
    // 闰年的判定标准： 第一能被4整除，但是不能被100整除的是闰年；
    // 第二能被400整除的也是闰年。（if）
    public static String runYear(int year) {
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
            return year + "年是闰年！";
        } else {
            return year + "年是平年!";
        }
    }

    /**
     * 4、输入今天是星期几，打印出当天下班后的安排（switch语句）
     * /*
     * 请用户输入今天是星期几（1-7），打印出来晚上的安排
     * 周一：开例会
     * 周二健身
     * 周三沟通客户
     * 周四项目加班
     * 周五项目加班
     * 周六健身
     * 周天带孩子回父母家看看
     */
    public static String work(int day) {
        if (day > 7 || day < 0) {
            return "请输入1-7";
        }
        switch (day) {
            case 1:
                return "开例会";
            case 2:
                return "健身";
            case 3:
                return "沟通客户";
            case 4:
                return "项目加班";
            case 5:
                return "项目加班";
            case 6:
                return "健身";
            default:
                return "带孩子回父母家看看";
        }
    }

    /**
     * 5、输入5个人的成绩，打印出总分、平均分。（for循环）
     */
    public static void scoreStu(int[] arr) {
        double sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        double avg = sum * 1.0 / arr.length;
        System.out.println("总分为:" + sum + "\t 平均分为:" + avg);
    }

    /**
     * 6、输入一个5位数，判断这个数是不是回文数
     * (回文数：比如 12321,34543就是回文数，万位=个位 千位=十位)（if）
     */
    public static void huiWenNum(int num) {
        int thousands = num / 10000;          // 万位
        int hundreds = (num / 1000) % 10;     // 千位
        int tens = (num / 100) % 10;          // 百位
        int ones = (num / 10) % 10;           // 十位
        int units = num % 10;                 //个位
        if (thousands == units && hundreds == ones) {
            System.out.println(num + "是一个回文数");
        } else {
            System.out.println(num + "不是一个回文数");
        }

    }

    /**
     * 7、输入三角形的三条边长，判断是否能组成一个三角形
     * （提示：三角形任意两条边之和大于第三边。）（if）
     * 扩展：判断这个三角形是直角、钝角还是锐角。
     */
    public static String sanJiao(int a, int b, int c) {

        if ((a + b > c) || (a + c > b) || (b + c > a)) {
            if (a * a + b * b == c * c || b * b + c * c == a * a || a * a + c * c == b * b) {
                return "这是一个直角三角形";
            } else if (a * a + b * b < c * c || b * b + c * c < a * a || a * a + c * c < b * b) {
                return "这是一个锐角三角形";
            } else if (a * a + b * b > c * c || b * b + c * c > a * a || a * a + c * c > b * b) {
                return "这是一个钝角三角形";
            }
            return "这是一个三角形";
        } else {
            return "不是三角形";
        }
    }

    /**
     * 8、使用for语句循环计算1-100所有偶数的和（for）
     */
    public static void ouSum() {
        int sum = 0;
        for (int i = 1; i <= 100; i += 2) {
            sum += i;
        }
        System.out.println("1-100的偶数和为:" + sum);
    }

    /**
     * 9、任意输入一个9位以内的整型数字，打印出它是几位数（while）
     */
    public static void num(int num) {
        int count = 0; //位数计数器
        while (num != 0) {
            num /= 10;
            count++;
        }
        System.out.println("共有" + count + "位");
    }


}
